package client;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JLabel;
import javax.swing.border.LineBorder;

import partie.Joueur;
import partie.PaquetCartesDobble;
import service.MessageSocketToolbox;

public class LabelImage {
	private int indexImage;
	JLabel lblLabelImage;
	Joueur joueurDeLaCarteQuiContientCeSymbole;
	Joueur joueurDuClient;
	InterfaceClientGUI interfaceClient;
	
	public LabelImage(final InterfaceClientGUI interfaceClient){
		indexImage=-1;
		this.interfaceClient = interfaceClient;
		lblLabelImage = new JLabel();
		Dimension dimension = new Dimension(30,30);
		lblLabelImage.setMaximumSize(dimension);
		lblLabelImage.setMinimumSize(dimension);
		lblLabelImage.setPreferredSize(dimension);
		lblLabelImage.setBorder(new LineBorder(Color.black, 1));
		lblLabelImage.addMouseListener(new MouseAdapter() {
			@Override
			public synchronized void mouseClicked(MouseEvent arg0) {

				if (joueurDuClient.getIdCarte()>=0 && joueurDeLaCarteQuiContientCeSymbole.getIdCarte()>=0 && indexImage >=0 && joueurDeLaCarteQuiContientCeSymbole != joueurDuClient) {
					boolean testDoublon = PaquetCartesDobble.verificationDoublon(joueurDeLaCarteQuiContientCeSymbole.getIdCarte(), joueurDuClient.getIdCarte(), indexImage);
					if(testDoublon){
						interfaceClient.envoyerMessage(MessageSocketToolbox.doublon(joueurDuClient.getId(), joueurDeLaCarteQuiContientCeSymbole.getId(), joueurDuClient.getIdCarte(), joueurDeLaCarteQuiContientCeSymbole.getIdCarte(), indexImage, interfaceClient.getTour()));
					}
				}
			}
		});
		lblLabelImage.setText(indexImage+"");
	}
	
	public void setIndexImage(int indexImage) {
		
		this.indexImage=indexImage;
		this.lblLabelImage.setText(indexImage+"");
		this.lblLabelImage.validate();
	}
	
	public void setIndexImage(Joueur joueurDeLaCarteQuiVaChanger, Joueur joueurDuClient, int indexImage) {
		
		this.joueurDeLaCarteQuiContientCeSymbole = joueurDeLaCarteQuiVaChanger;
		this.joueurDuClient = joueurDuClient;
		this.indexImage=indexImage;
		this.lblLabelImage.setText(indexImage+"");
		this.lblLabelImage.validate();
	}
	
	public int getIndexImage(){
		return this.indexImage;
	}
	
}
